package com.genreate.util.pay.ali.jsApi;

import com.alipay.v3.ApiException;
import com.alipay.v3.ApiClient;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayTradeApi;
import com.alipay.v3.model.*;
import com.alipay.v3.util.model.CustomizedParams;
import com.genreate.util.pay.ali.AliPayConfigPo;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 统一收单交易创建接口
 *
 * @author LYS
 * @date 2025-07-08
 */
public class AlipayTradeApiCreate {

    public static void main(String[] args) throws ApiException {
        ApiClient defaultClient = Configuration.getDefaultApiClient();
        // 初始化alipay参数（全局设置一次）
        defaultClient.setAlipayConfig(getAlipayConfig());

        // 构造请求参数以调用接口
        AlipayTradeApi api = new AlipayTradeApi();
        AlipayTradeCreateModel data = new AlipayTradeCreateModel();
        
        // 设置商户订单号
        data.setOutTradeNo("2025070800002");
        
        // 设置产品码
        data.setProductCode("JSAPI_PAY");
        
        // 设置小程序支付中
        data.setOpAppId("9021000135622742");
        
        // 设置订单总金额
        data.setTotalAmount("88.88");
        
        // 设置可打折金额
        data.setDiscountableAmount("80.00");
        
        // 设置订单标题
        data.setSubject("Iphone6 16G");
        
        // 设置订单附加信息
        data.setBody("订单附加信息");


        try {
            AlipayTradeCreateResponseModel response = api.create(data);
            System.out.println(response);
        } catch (ApiException e) {
            e.printStackTrace();
            AlipayTradeCreateDefaultResponse errorObject = (AlipayTradeCreateDefaultResponse) e.getErrorObject();
            System.out.println("调用失败:" + errorObject);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static AlipayConfig getAlipayConfig() {
        return AliPayConfigPo.getAppAlipayConfig();
    }
}
